#include <bits/stdc++.h>
#define int long long 
using namespace std;
int n;
const int maxn = 15;
int arr[maxn];

vector<int> v[maxn];

bool dfs(int c, int dep){
	if (dep == n+1) {
		// 每个人都有队伍了
		return true;
	}
	// 递归, 尝试向每个队伍里面放
	for (int i=1;i<=c;i++) {
		bool tag = true;
		for (int j=0;j<v[i].size();j++) {
			if (arr[dep] % v[i][j] == 0) {
				tag = false;
				break;
			}
		}
		if (tag) {
			// 能放
			v[i].push_back(arr[dep]);
			if(dfs(c, dep+1)) return true;
			// 这个队伍放完进行恢复现场, 继续尝试向其他队伍放
			v[i].pop_back();
		}
	}
	
	return false;
}



void solve(){
	cin >> n;
	for (int i=1;i<=n;i++) {
		cin >> arr[i];
	}
	sort(arr+1, arr+1+n); // 先排序处理一下后面更容易处理
	// 直接从小到大进行遍历即可
	for (int i=1;i<=n;i++) {
		if (dfs(i, 1)) {
			cout << i << '\n';
			return;
		}
	}
}


signed main(){
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	solve();
	return 0;
}
